/**
 * AppContentText 类负责处理字符串数据的获取、分析和保存操作。
 * 它通过依赖注入的方式接收三个接口作为构造参数：
 * StringDataGetter 用于获取字符串数据，
 * Analyzable 用于分析字符串数据，
 * TextSaver 用于保存分析后的文本数据。
 */
class AppContentText(
    // StringDataGetter 用于从某个数据源获取字符串数据。
    private val stringDataGetter: StringDataGetter,
    // Analyzable 负责对获取到的字符串数据进行分析处理。
    private val analyzer: Analyzable,
    // TextSaver 负责将处理后的文本数据保存到指定位置。
    private val saver: TextSaver
) {

    /**
     * doWork 函数顺序调用获取数据、分析数据和保存结果的方法完成工作任务。
     * 它首先从 stringDataGetter 中获取当天的文件数据，
     * 然后使用 analyzer 对获取的数据进行分析，
     * 最后将分析结果通过 saver 保存起来。
     */
    fun doWork() {
        // 从 stringDataGetter 中获取原始字符串数据。
        val originStringData: String = stringDataGetter.getTodayFileData()
        // 使用 analyzer 对原始字符串数据进行分析。
        val result: String = analyzer.analyze(originStringData)
        // 通过 saver 保存分析结果。
        saver.saveText(result)
    }
}
